//
//  MessageFactory.h
//  rmip_clientapi
//
//  Created by bob on 16/1/8.
//  Copyright © 2016年 bob. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AppConfig.h"
#import "HttpHeader.h"
#import "RequestMessage.h"
#import "ResponseMessage.h"

/**
 *  标准接口回调函数定义
 *  @param res http响应消息
 */
typedef void (^HttpPostCallback)(ResponseMessage *res);

/**
 *  Get请求回调函数定义
 *  @param res http响应消息
 */
typedef void (^HttpGetCallBack)(NSString *responsemessage);


/**
 *  消息工厂定义，提供外部调用的API入口
 */
@interface MessageFactory : NSObject

///获取应用配置
+(AppConfig*)getAppConfig;

///获取HTTP头信息
+(HttpHeader*)getHttpHeader;

/****************************常用API定义**************************/

/**
 *  采集设备信息接口
 *
 *  @return true成功 false失败,真实结果在httpresult中异步给出
 */
+(BOOL)API_catchdevice:(NSString*)token httpresult:(HttpPostCallback) httpresult;

/**
 *  获取短信验证码
 *
 *  @param usernumber 用户号码
 *  @param type       类型0－注册 1-忘记密码
 *  @param httpresult 回调结果
 *
 *  @return true成功 false失败，真实结果在httpresult中异步给出
 */
+(BOOL)API_getvalidcode:(NSString*)usernumber type:(NSString*)type httpresult:(HttpPostCallback) httpresult;

/**
 *  获取应用程序基础配置
 *
 *  @param updatetime 最后更新时间
 *  @param httpresult 回调结果
 *
 *  @return true成功 false失败，真实结果在httpresult中异步给出
 */
+(BOOL)API_getbasecfg:(NSString*)updatetime httpresult:(HttpPostCallback) httpresult;




/****************************通用API定义**************************/
/**
 *  移动业务接口通用POST请求，采用阻塞方式，该请求遵循v2.0 rmip移动业务接口规范协议
 *  @param req 请求消息对象
 *  @return 调用结果:true成功,false失败
 */
+(BOOL)doPost:(RequestMessage*)req/*请求消息*/ res:(ResponseMessage*)res/*响应消息*/;

/**
 *  移动业务接口通用POST请求，采用非阻塞方式（协议），该请求遵循v2.0 rmip移动业务接口规范协议
 *  @param req 请求消息对象
 *  @return 调用结果:true成功,false失败
 */
+(BOOL)doPost:(RequestMessage*)req/*请求消息*/;

/**
 *  移动业务接口通用POST请求，采用非阻塞方式（回调），该请求遵循v2.0 rmip移动业务接口规范协议
 *  @param req        请求消息对象
 *  @param httpresult 回调函数
 *  @return 调用结果:true成功,false失败
 */
+(BOOL)doPost:(RequestMessage*)req/*请求消息*/ httpresult:(HttpPostCallback) httpresult;

/**
 *  移动业务接口通用POST表单请求，采用非阻塞方式（回调），该请求遵循v2.0 rmip移动业务接口规范协议
 *  @param req        请求消息对象
 *  @param httpresult 回调函数
 *  @return 调用结果:true成功,false失败
 */
+(BOOL)doFormPost:(RequestMessage*)req/*请求消息*/ httpresult:(HttpPostCallback) httpresult;


/**
 *  发送get请求,文本内容(待测试)
 *  @param url URL链接
 *  @return 响应消息内容
 */
+(BOOL)doGet:(NSString*)url dict:(NSMutableDictionary*)dict httpresult:(HttpGetCallBack) httpresult;


@end
